home *** CD-ROM | disk | FTP | other *** search
/ Aminet 39 / Aminet 39 (2000)(Schatztruhe)[!][Oct 2000].iso / Aminet / dev / basic / SDSTCPLib.lha / SDSTCPLibrary / Examples / TCPCLIHTTPExample.ASC next >
Encoding:
Text File  |  1992-04-24  |  4.0 KB  |  132 lines

  1. ;
  2. ; HTTPGetCLI - V1.00 - Written by Rob Hutchinson as an Example for
  3. ;                      the SDSTCPSocketLib.obj.
  4. ;                      22.03.2000 - 01:30
  5. ;
  6. ; DESCRIPTION:
  7. ; Download a file from the internet via HyperText Transfer Protocol.
  8. ;
  9. ; PROTOCOL:
  10. ; HyperText Transfer Protocol (HTTP) Port 80
  11. ;
  12. ; ARGUMENTS:
  13. ; USAGE:  HTTPGet <URL$>,<DownloadTo$>
  14. ;
  15. ; TO COMPILE REQUIRES:
  16. ; SDSTCPSocketLib.obj and SDSTCP.RES
  17. ;
  18. ; For further help and assistance email: rob@satanicdream.com
  19. ;
  20.  
  21.   NPrint "HTTPGet - CLI Version, Written by Rob Hutchinson of Satanic Dreams Software."
  22.   NPrint "This program uses the SDSTCPSocketLib.obj library for Blitz. For updates"
  23.   NPrint "visit: http://www.satanicdreams.com/"
  24.   NPrint Chr$(10)+"V1.02 Written 22.03.2000 - 01:30."+Chr$(10)
  25.  
  26.   If NumPars<>2
  27.     NPrint "ERROR #1: Wrong number of parameters."
  28.     NPrint ""
  29.     NPrint "USAGE: HTTPGet <URL$>,<DownloadTo$>"
  30.     NPrint ""
  31.     End
  32.   Else
  33.     HTTPFile$=Par$(1)
  34.     Outfile$=Par$(2)
  35.     If WriteFile(0,Outfile$)=False
  36.       NPrint "ERROR #2: Cannot open file for output, please choose another."
  37.     EndIf
  38.   EndIf
  39.  
  40.   h=Instr(HTTPFile$,"/",8)
  41.   host$=Mid$(HTTPFile$,8,h-8)
  42.   doc$=Mid$(HTTPFile$,h,Len(HTTPFile$))
  43.   getstr$="GET "+HTTPFile$+Chr$(13)+Chr$(10)
  44.  
  45.   If TCPOpen
  46.  
  47.     failtest.l=TCPCreateSocket(0,Off,#TCP_SOCK_Read|#TCP_SOCK_Write,20,0)
  48.  
  49.     If failtest.l = #TCP_SOCK_Ok
  50.       NPrint "Attempting to connect socket to: "+host$+" on port 80 (HTTP).."
  51.       NPrint "Looking up hostname."
  52.       OurSockStatus.l=TCPConnectSocket(0,host$,80)
  53.       If OurSockStatus.l=#TCP_CONN_CONNECTING
  54.         NPrint "Socket connecting....."
  55.  
  56.         Repeat
  57.           Delay_ 1
  58.           Tev.l=TCPEvent
  59.           If Tev.l>0
  60.             If (OurSockStatus.l=#TCP_CONN_CONNECTING) AND TCPIsReadEvent(0) OR TCPIsWriteEvent(0)
  61.  
  62.               tcperr.l=TCPSocketError(0)
  63.               If tcperr.l
  64.                 DefaultOutput : NPrint "ERROR #",tcperr.l,": ",TCPErrorString$
  65.                 quitit.b=1
  66.               Else
  67.                 Print "Connected to: ",host$," on port 80."+Chr$(10)+Chr$(10)+"Progress: "
  68.                 OurSockStatus.l=0
  69.                 TCPSetStates 0,#TCP_SOCK_Read
  70.                 TCPNPrint    0,getstr$
  71.                 FileOutput 0
  72.                 ResetTimer
  73.               EndIf
  74.             Else
  75.               If Tev
  76.                 If TCPIsReadEvent(0)
  77.                   tcperr.l=TCPSocketError(0)
  78.                   If tcperr.l
  79.                     DefaultOutput : NPrint "ERROR #",tcperr.l,": ",TCPErrorString$
  80.                     quitit.b=1
  81.                   Else
  82.                     Reed$=TCPReadSocket$(0)
  83.                     If Reed$=""
  84.                       CloseFile 0
  85.                       quitit.b=1
  86.  
  87.                       DefaultOutput : NPrint Chr$(10)+Chr$(10)+"File transfer complete..."
  88.                       NPrint "File ",Outfile$," was ",FileSizeCount.l," bytes and took ",Ticks/50," secs to download."
  89.                       NPrint "Program terminated."
  90.                     Else
  91.                       FileSizeCount.l+TCPLastReadSize
  92.                       DefaultOutput : Print "."
  93.                       FileOutput 0
  94.                       Print Reed$
  95.                     EndIf
  96.                   EndIf
  97.                 EndIf
  98.               EndIf
  99.             EndIf
  100.           EndIf
  101.  
  102.         Until quitit.b=1
  103.         TCPRemoveSocket 0
  104.       Else
  105.         Select OurSockStatus.l
  106.           Case #TCP_CONN_FailHostResolve
  107.             NPrint "ERROR #3: Unable to resolve hostname. FAILED!"
  108.           Case #TCP_CONN_FailNoConnect
  109.             NPrint "ERROR #4: Not connected. FAILED!"
  110.           Case #TCP_CONN_FailError
  111.             NPrint "ERROR #5: Fatal error. FAILED!"
  112.         End Select
  113.       EndIf
  114.  
  115.     Else
  116.  
  117.       Select failtest.l
  118.         Case #TCP_SOCK_FailTimeout
  119.           NPrint "ERROR #6: Could not set timeout. FAILED!"
  120.         Case #TCP_SOCK_FailAsync
  121.           NPrint "ERROR #7: Could not set async. FAILED!"
  122.         Case #TCP_SOCK_FailNoSock
  123.           NPrint "ERROR #8: Could not create sock. FAILED!"
  124.       End Select
  125.  
  126.     EndIf
  127.   EndIf
  128.  
  129.   TCPClose
  130.   End
  131.  
  132.